import request from '@/api/axios'
import {AxiosPromise} from 'axios'
import {DataRes} from '@/api/config'
import {BasePhysicalExamination} from './index'

/**
 * @description: 表单属性
 * @return {*}
 */
export interface GeneralCondition extends BasePhysicalExamination {
  hasSymprom?: boolean // 是否有症状
  symprom: string // 症状
  sympromOthers?: string | null // 症状其他内容
  sympromGroup: Array<string> // 症状复选
  tempera?: number // 体温
  pulseRate?: number // 脉率
  breathRate?: number // 呼吸频率
  sbpLeft?: number // 收缩压(左)
  dbpLeft?: number // 舒张压(左)
  sbpRight?: number // 收缩压(右)
  dbpRight?: number // 舒张压(右)
  height?: number // 身高
  weight?: number // 体重
  waist?: number // 腰围
  bmi?: number | null // 体质指数(BMI)
  odSelfevalState: number // 健康状态评估
  odSelfcareState: number // 自理能力评估
  odSelfcareScore: string // 自理能力得分详情
  odSelfcareScoreTotal: number // 自理能力总分
  odCognState: number // 认知能力
  odCognCribble: string // 认知能力粗筛详情
  odCognScore: string // 认知能力得分
  odCognScoreTotal: number // 认知能力总分
  odEmotionState: number // 情感状态
  odEmotionCribble: number // 情感状态粗筛详情
  odEmotionScore: string // 情感状态得分
  odEmotionScoreTotal: number // 情感状态总分
}

// 剔除后端不要的属性
export type GeneralConditionParams = Omit<GeneralCondition, 'sympromGroup'>

/**
 * @description: 保存一般状况
 * @param {GeneralCondition} data
 * @return {*}
 */
export const saveGeneralCondition = (data: GeneralConditionParams): AxiosPromise<DataRes<undefined>> => {
  return request({
    url: '/api/generalCondition/save',
    method: 'post',
    data
  })
}

/**
 * @description: 根据体检登记表id获取一般状况数据
 * @param {string} checkupRegisterId
 * @return {*}
 */
export const getGeneralCondition = (checkupRegisterId: string): AxiosPromise<DataRes<GeneralCondition>> => {
  return request({
    url: `/api/generalCondition/get/${checkupRegisterId}`,
    method: 'get'
  })
}

/**
 * @description: 拒检一般状况
 * @param {BasePhysicalExamination} data
 * @return {*}
 */
export const rejectGeneralCondition = (data: GeneralConditionParams): AxiosPromise<DataRes<undefined>> => {
  return request({
    url: '/api/generalCondition/reject',
    method: 'post',
    data
  })
}
